primitive and non primitive datatypes